package modelo;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import dao.DesempenioDAO;
import entidades.Desempenio;
import entidades.Obrero;
import entidades.Proyecto;
import excepciones.FaltanCompletarCamposException;
import excepciones.FechaNoPuedeSerMayorException;


public class ModeloDesempenio {
	

	public List<Desempenio> obtenerListaDesempenios() throws Exception{
		return DesempenioDAO.getInstancia().obtenerListaDesempenios();
	}
	
	public void altaDesempenio(int tiempoRespuesta, int actitud,
			int profesionalismo, int puntualidad, Date fechaEvaluacion,
			Proyecto proyecto, Obrero obrero) throws FaltanCompletarCamposException,FechaNoPuedeSerMayorException,Exception{ 
		
		ModeloObrero m = new ModeloObrero();
		
		Calendar cal = new GregorianCalendar();
		if(fechaEvaluacion.after(cal.getTime())){
			throw new FechaNoPuedeSerMayorException();
		}if(tiempoRespuesta == 0 || actitud == 0 || profesionalismo == 0 || puntualidad == 0 ){
			throw new FaltanCompletarCamposException();
			
		}
		
		Desempenio d = new Desempenio();
		d.setActitud(actitud);
		d.setFechaEvaluacion(fechaEvaluacion);
		d.setObrero(obrero);
		d.setProfesionalismo(profesionalismo);
		d.setProyecto(proyecto);
		d.setPuntualidad(puntualidad);
		d.setTiempoRespuesta(tiempoRespuesta);
		
		m.actualizarScorePorEvaluacion(obrero, tiempoRespuesta, actitud, profesionalismo, puntualidad);
		
		DesempenioDAO.getInstancia().guardarUnDesempenio(d);
	}

	public List<Desempenio> obtenerDesempenioPorObrero(Obrero obreroSeleccionado) throws Exception {
		return DesempenioDAO.getInstancia().obtenerDesempenioPorObrero(obreroSeleccionado);
	}
	
	
	
}
